function peopleAwareOfSecret(n, delay, forget) {
  const MOD = 1e9 + 7;
  // dp[i]表示第i天新增的知道秘密的人数
  const dp = new Array(n + 1).fill(0);
  dp[1] = 1; // 第1天有1人知道秘密

  // 计算每天新增的知道秘密的人数
  for (let i = 2; i <= n; i++) {
    // 能分享秘密的人是在[i-forget+1, i-delay]区间内知道秘密的人
    const start = Math.max(1, i - forget + 1);
    const end = i - delay;

    if (end >= start) {
      for (let j = start; j <= end; j++) {
        dp[i] = (dp[i] + dp[j]) % MOD;
      }
    }
  }

  // 计算第n天结束时知道秘密的总人数
  // 只有在[n-forget+1, n]区间内知道秘密的人还没忘记
  let result = 0;
  const start = Math.max(1, n - forget + 1);
  for (let i = start; i <= n; i++) {
    result = (result + dp[i]) % MOD;
  }

  return result;
}

// 测试示例
console.log(peopleAwareOfSecret(6, 2, 4)); // 输出: 5
console.log(peopleAwareOfSecret(4, 1, 3)); // 输出: 6
